package com.ba.redis;

import java.io.Serializable;
import java.util.Map;

public interface RedisCacheStorage<K,V> {
    
    /**
     * <p>
     * 在redis数据库中，根据key值获取value值
     * </p>
     * @param key
     * @return
     * @since 8.0.1
     */
    V get(K key);
    
    void set(Serializable key, Serializable value);
    
    /**
     * <p>
     * 在redis数据库中插入 key  和value 
     * </p>
     * @param key
     * @param value
     * @return
     * @since 8.0.1
     */
//    boolean set(K key,V value);
    
    /**
     * <p>
     * 在redis数据库中插入 key  和value ,过期时间
     * </p>
     * @param key
     * @param value
     * @param exp
     * @return
     * @since 8.0.1
     */
    boolean set(K key,V value,int exp);
    

    
    /**
     * <p>
     * 在redis数据库中根据key值移除值
     * </p>
     * @param key
     * @return
     * @since 8.0.1
     */
    boolean remove(K key);
    
    /**
     * <p>
     * 设置hash类型数据到redis数据库表  
     * </p>
     * @param cacheKey  可以看做一张表 
     * @param key  表字段
     * @param value   
     * @return
     * @since 8.0.1
     */
    boolean hset(String cacheKey,K key,V value);
    
    /**
     * <p>
     *  获取哈希表数据类型的值 
     * </p>
     * @param cacheKey
     * @param key
     * @return
     * @since 8.0.1
     */
    V hget(String cacheKey,K key);
    
    /**
     * <p>
     * 获取哈希类型的数据
     * </p>
     * @param cacheKey
     * @return
     * @since 8.0.1
     */
    Map<String, V> getHash(String cacheKey);
    
}
